package leetcode_周赛._2021._202104._20210418;

import java.util.ArrayList;
import java.util.List;

/**
 * @author yzh
 * @version 1.0
 * @date 2021/4/18 10:59
 * 所有数对按位与结果的异或和
 * 老实做法：先算出两个数组 and 之后的数组，然后再把这个新数组中的元素 XOR  O(n * n) 超时
 */
public class _5737 {

    public int getXORSum_perfect(int[] arr1, int[] arr2) {
        int t = 0;
        for (int i : arr2) {
            t = t ^ i;
        }
        int ans = 0;
        for (int i : arr1) {
            ans = ans ^ (i & t);
        }
        return ans;
    }

    public int getXORSum(int[] arr1, int[] arr2) {
        List<Integer> list = new ArrayList<>();
        for (int i : arr1) {
            for (int i1 : arr2) {
                list.add(i & i1);
            }
        }
        int ans = 0;
        for (int i : list) {
            ans = ans ^ i;
        }
        return ans;
    }
}
